package jp.ac.u_tokyo.dch.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import jp.ac.u_tokyo.dch.view.Constants;

import org.apache.commons.lang.xwork.StringUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**
* @version 1.1
*/
public class LoginInterceptor extends AbstractInterceptor {

	/**
	 *シリアル番号
	 */
	private static final long serialVersionUID = 323975638122941960L;

	/**
	 * 初期化処理
	 */
	public void init() {
	}

	/**
	 * 終了処理
	 */
	public void destroy() {
	}

	/**
	 * 各画面に遷移する前にログインセッションチェックを行う
	 * セッションにログイン情報がない場合、ログイン画面へ遷移
	 *
	 */
	public String intercept(ActionInvocation invocation) throws Exception {

		HttpServletRequest request = ServletActionContext.getRequest();
		HttpSession session = request.getSession();

		if (null == session.getAttribute("loginUserId")) {

			String url = request.getRequestURL().toString();
			String query = request.getQueryString();


			if (StringUtils.isEmpty(query)) {
				query = "";
			}

			session.setAttribute(Constants.DIRECT_URL, url + "?" + query);

			// 未ログインの場合には、ログイン画面に遷移する。
			return "login";
		} else {
			// ログイン済みの場合には、以後のinterceptor処理に進む。
			return invocation.invoke();
		}
	} /* end of intercept() */

}
